Conversation
Member
ocots
commented
Apr 28, 2026
- Move src/, docs/, ext/, test/ to save/ for rewrite
- Add reports/ with design documentation:
- design.md: abstract types, strategy family contracts, pipelines
- candidate_strategies.md: candidate strategy families and rationale
- strategies.md: CTSolvers strategy contract reference
- Update .windsurf/rules/:
- modules.md: submodule architecture standards (CTSolvers pattern)
- testing.md: adapt CTModels testing standards to CTFlows
- Update test/runtests.jl: use CTBase.run_tests() pattern
- Shows raw type name (not full signature) for cleaner display - Shows time span and number of time points if available - Add display() call in example script
- Remove integrate.jl (no longer needed) - Remove solve_system.jl and solve_vector_field.jl (simplified to solve(flow, config)) - Remove test_integrate.jl (no longer needed) - Update Pipelines.jl manifest
- Add RecipesBase to deps and Plots to weakdeps - Add CTFlowsPlotsExt extension with plot, plot! methods - Add RecipesBase.plot stub in solution.jl (throws error if extension not loaded) - Move RecipesBase import to Systems.jl module level - Remove callable stub (not needed for extension) - Update example script to use new API
- Remove callable stub from solution.jl - Add actual callable directly in solution.jl (delegates to sol.raw) - Remove callable from CTFlowsPlotsExt.jl (not Plots-specific) - Callable is always available since it just delegates to raw SciML solution
- Add comprehensive docstring for AbstractTag explaining its role as a dispatch tag for extension architecture - Update docstrings.md to clarify that internal references (@ref) must use full module path including root package - Fix templates to show proper qualification pattern (PackageName.ModuleName.symbol)
…tion - Add docstrings for PointConfig and TrajectoryConfig structs - Add docstring for AbstractTag explaining dispatch-based extension architecture - Fix api_reference.jl: replace Core with Common, remove ADBackends and Modelers - Update index.md to remove references to non-existent modules - Update docstrings.md to clarify @ref qualification requires full module path
- Add AbstractConfig abstract type as marker for configuration objects - Update PointConfig and TrajectoryConfig to subtype AbstractConfig - Export AbstractConfig from Common module - Type config parameters with Common.AbstractConfig in: - AbstractFlow callable signature - Systems.ode_problem signature - Systems.build_solution signature - Pipelines.solve signature - Update docstring cross-references to use full module path
…andards - Add tests for AbstractConfig export verification - Add tests for type hierarchy (PointConfig/TrajectoryConfig <: AbstractConfig) - Add tests for Base.show methods for both config types - Follow testing standards with clear section separation and descriptive test names
…eferences - Update all internal cross-references to use full module path with root package - Fix contract section examples to use CTFlows.Common.PointConfig and CTFlows.Common.TrajectoryConfig - Update See also sections to use CTFlows.Flows.Flow, CTFlows.Systems.AbstractSystem, CTFlows.Integrators.AbstractODEIntegrator
- Add (f::FakeFlow)(config::Common.AbstractConfig) method - Add test for callable with TrajectoryConfig on MinimalFlow - Add test for callable with config on FakeFlow (PointConfig and TrajectoryConfig) - Add exception message verification using try-catch blocks - Ensure all NotImplemented exceptions are tested with fake structs
Let exceptions propagate naturally when contract methods are not implemented, forcing proper implementation rather than silently hiding errors.
- Update cross-references to use full module path - Add # Arguments and # Returns sections to all function docstrings - Improve documentation for system, integrator, and callable methods
- Add docstrings to PointConfig show methods - Add docstrings to TrajectoryConfig show methods - Add docstrings to specialized Flow show methods for VectorFieldSystem
- Add Real type constraints to PointConfig (T0, TF) and TrajectoryConfig (TS) - Add tspan accessor functions for both config types for consistent API - Add docstrings to tspan functions with examples - Generalize __autonomous and __variable docstrings to apply to all time-dependent objects (not just VectorField)
… file - Add tspan to Common.jl exports (was missing) - Create test_abstract_tag.jl for abstract_tag.jl - Create test_configs.jl for configs.jl (with fake types for contract testing) - Create test_default.jl for default.jl - Rename test_common.jl to test_traits.jl (tests for traits.jl only) - Create test_common_module.jl to verify Common.jl exports and type hierarchy - Remove duplicate configs tests from test_common.jl Each source file now has its own orthogonal test file following testing standards.
- Add _caller_function_name() to detect caller from stacktrace instead of requiring source_method argument - Update has_time_dependence_trait and has_variable_dependence_trait to use automatic caller detection - Remove source_method argument from all accessor functions (is_autonomous, is_nonautonomous, is_variable, is_nonvariable, has_variable) - Update has_variable docstring to reflect it's no longer an alias - Add test_error_contains_caller helper function for testing error messages - Fix _caller_function_name to skip exact trait check function names (has_time_dependence_trait, has_variable_dependence_trait) - Update trait tests to use === instead of isa for type comparisons - All tests pass (52/52)
- Add Example sections to all docstrings in abstract_system.jl - Show concrete MySystem implementation for contract methods - Return trait types (not instances) in examples - Add usage examples for rhs! function - Revise test_abstract_system.jl to be orthogonal - Remove tests for methods not in abstract_system.jl - Add trait method tests (has_time_dependence_trait, has_variable_dependence_trait) - Add logic tests for rhs! signature and behavior - Add NotImplemented error structure verification - Fix DataType tests (not supported by trait methods) - Fix NotImplemented error test (use try/catch instead of @test_throws)
- Add docstrings for VectorField struct, constructor, trait methods, and Base.show - Add trait methods (has_time_dependence_trait, has_variable_dependence_trait) - Add docstrings for time_dependence and variable_dependence with examples - Fix VectorField type parameter to F<:Function - Fix time_dependence and variable_dependence to use Common. prefix - Revise test_vector_field.jl to be orthogonal (only test vector_field.jl) - Remove tests for VectorFieldSystem (move to separate file) - Remove tests for non-existent explicit constructor - Add tests for trait methods and trait checks - Add tests for natural call signatures (scalar, vector, matrix) - Add tests for uniform call signature (t, x, v) - Add tests for Common trait predicates (is_autonomous, is_variable, etc.) - Fix VectorFieldSystem type parameter to F<:Function - Fix matrix test expectations
- Add example and See also to VectorFieldSystem struct docstring - Add Arguments, Returns, Example, See also to rhs! docstring - Add Example and See also to variable_dependence docstring - Add Example and See also to time_dependence docstring - Add docstrings for Base.show methods - Create test_vector_field_system.jl with orthogonal tests - Test Abstract Types, Construction, Contract Implementation - Test trait methods and Common trait predicates - Add exports verification
- Create new Data submodule with VectorField type - Move vector_field.jl from Systems/ to Data/ - Update all references from Systems.VectorField to Data.VectorField - Add Data module to CTFlows.jl in correct order (Common → Data → Systems) - Update Systems.jl to import Data module - Update Pipelines.jl to import Data module - Move build_solution.jl and solution.jl from Systems/ to Pipelines/ - Create test_data_module.jl for Data module exports - Create test_systems_module.jl for Systems module exports - Remove test_vector_field.jl from test/suite/systems/
- Add missing docstrings for trait methods (has_time_dependence_trait, has_variable_dependence_trait, time_dependence) - Improve AbstractFlow docstring with Traits section explaining delegation to system - Improve variable_dependence docstring with arguments and returns - Remove irrelevant callable method tests (not part of AbstractFlow contract) - Fix FakeSystem to implement correct AbstractSystem contract - Add CTFlows.Data import for VectorField integration tests - Update VectorField constructor calls to use kwargs (autonomous, variable) - All tests now pass (40/40)
…actFlow
- Add VD<:Common.VariableDependence parameter to AbstractSystem{VD}
- Add VD<:Common.VariableDependence parameter to AbstractFlow{VD}
- Update Flow{VD, S, I} to inherit VD from system type
- Simplify Flow callable methods: use variable=nothing instead of trait-based dispatch
- Remove error-throwing methods for Fixed/NonFixed variable handling
- Update VectorFieldSystem to subtype AbstractSystem{VD}
- Add test_flow_module.jl for Flows module exports verification
- Update docstrings for Flow callable methods with See also sections
…ture
- Fix system(f::Flow{VD, S, I}) and integrator(f::Flow{VD, S, I}) signatures to include VD parameter
- Update test_abstract_flow.jl: FakeSystem and FakeFlow to subtype parametric types
- Update test_flow.jl: FakeSystem/FakeFlow to use Common.Fixed/Common.NonFixed types
- Update test_flow_module.jl: FakeSystem to subtype AbstractSystem{Common.Fixed}
- Update trait implementations to return types (Common.Fixed) instead of instances (Common.Fixed())
- Remove trait-based dispatch error tests (now using variable=nothing pattern)
- Add Flows.building.jl: high-level Flow constructor from VectorField - Add Flows.calling.jl: call function for solving ODE problems with helpers - Add Systems.building.jl: build_system function for VectorFieldSystem - Add Integrators.building.jl: build_integrator function for integrator creation - Add comprehensive tests for building.jl in Systems and Flows modules - Add comprehensive tests for calling.jl using fake structs - Update Flows.jl exports: add call to public API - Add docstrings to all new functions following project standards - Rename AbstractODEIntegrator to AbstractIntegrator throughout - Remove Pipelines module (functionality moved to Flows) - Update Project.toml: remove OrdinaryDiffEqTsit5 from test dependencies - Update Integrators exports: AbstractIntegrator instead of AbstractODEIntegrator - Update Flows exports: add call function
- Rename abstract_ode_integrator.jl to abstract_integrator.jl for consistency
- Fix contract documentation: remove Base.show and describe (not part of required contract)
- Reorganize contract into type-level (id, metadata) and instance-level (options) sections
- Document all three required callable signatures: problem building, integration, solution building
- Add default NotImplemented implementations for all three callables
- Update tests to verify all three callable signatures
- Fix parametric type issue in FakeSystem (AbstractSystem{Common.Fixed})
- Add TD parameter to AbstractSystem{TD, VD} with TD before VD
- Move time_dependence and variable_dependence methods to AbstractSystem abstract type
- Update VectorFieldSystem to match new AbstractSystem signature
- Add TD parameter to AbstractFlow{TD, VD} and Flow{TD, VD, S, I}
- Update Flow calling.jl to handle TD parameter
- Add initial_condition method to Common module for normalizing initial conditions
- Update all test files to use new TD-before-VD signature
- Remove redundant trait methods from concrete types
…rge HSYS variants
…solidate HSYS variants
…est_sciml_extension.jl
…trix-forms-adaptive Feature/scalar vector matrix forms adaptive
- Add __hvf_inplace()::Bool = false to src/Common/default.jl - Export __hvf_inplace from src/Common/Common.jl - Add test for __hvf_inplace in test/suite/common/test_default.jl
…_vector_field getter - Add __ad_backend() returning AutoForwardDiff() to src/Differentiation/building.jl - Add ad_backend_type contract stub to src/Differentiation/abstract_ad_backend.jl - Add ad_backend_type concrete impl for DifferentiationInterface to src/Differentiation/differentiation_interface.jl - Export __ad_backend and ad_backend_type from src/Differentiation/Differentiation.jl
…or_field getter - Add __ad_backend() returning AutoForwardDiff() to src/Differentiation/building.jl - Add ad_backend contract stub to src/Differentiation/abstract_ad_backend.jl - Add ad_backend concrete impl for DifferentiationInterface to src/Differentiation/differentiation_interface.jl - Export __ad_backend and ad_backend from src/Differentiation/Differentiation.jl
- Add src/Systems/hamiltonian_getter.jl with 8 closure factories (4 OOP + 4 IP) and 4 getter overloads (Hamiltonian, HamiltonianVectorFieldSystem, HamiltonianSystem, AbstractHamiltonianSystem stub) - Modify src/Systems/Systems.jl to include hamiltonian_getter.jl and export hamiltonian_vector_field (removed unused ADTypes import) - Add test/suite/systems/test_hamiltonian_getter.jl with 85 tests covering: - Contract tests (ad_backend stub, AbstractHamiltonianSystem stub) - Structure tests with mocks (all 4 TD×VD cases) - Trivial getter for HamiltonianVectorFieldSystem - Real OOP tests with DifferentiationInterface (5 cases including variable_costate) - Real IP tests with DifferentiationInterface (4 cases) - Traits verification (8 cases: 4 OOP + 4 IP) - HamiltonianSystem structure tests (4 missing cases) - Export test - All tests pass (85/85)
…nFlow - Add Systems.hamiltonian_vector_field overloads for HamiltonianFlow with HamiltonianSystem and HamiltonianVectorFieldSystem - Import and re-export hamiltonian_vector_field from Flows module - Add comprehensive tests for flow-level delegation covering all trait combinations - Tests organized as UNIT (trait preservation), INTEGRATION (delegation by trait), CONTRACT (identity), and EXPORTS
…ions - Add detailed docstrings to 8 internal closure factory functions (_make_oop_hvf, _make_ip_hvf) - Add comprehensive docstrings to 4 public system-level getter overloads - Add detailed docstrings to 2 flow-level getter overloads - Follow CTFlows documentation standards with TYPEDSIGNATURES, Arguments, Returns, Notes, and cross-references
…guards - Data layer: expanded 4 NonFixed call signatures (OOP/IP) to accept variable_costate kwarg with hasmethod guard throwing PreconditionError when inner f doesn't support it - Systems layer: added dpv and variable_costate kwargs to 2 IP NonFixed closure factories with PreconditionError guard when dpv===nothing - Updated IP NonFixed docstrings to reflect implementation - Added 3 testsets for Data layer (user-built HVF error handling) - Added 8 testsets for Systems layer (IP variable_costate, hasmethod detection, OOP default) - Full suite verification: 2382 tests pass
Feature/hvf getter
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.